#ifndef USERWIDGET_H
#define USERWIDGET_H
#include <QWidget>
#include "ui_userwidget.h"
#include "umsusers.h"

#include <QDomElement>
class QStandardItemModel;
class QStandardItem;
	
class UserWidget: public QWidget,Ui::UserWidget
{
		Q_OBJECT
		QString _username;
		QString _userFileName;
		QDomDocument _docUsers;
		UMSUsers *_uusers;
		QStandardItemModel *_userModel;
	
		void setUserName(const QString &username);
		QString nodeValue(const QString &name,const QDomElement &root);
		QDomElement userNode(const QString &name);
		void loadUsers(const QDomDocument &doc);
		void selectUser(const QString &uname);
		QStandardItem *appendUserToTree(const QString &uin,const QString &name);
		void loadUsers();		
		bool hasUserName(const QString &uname);
		QListWidgetItem *addDatabaseInList(const QString &name);
		QListWidgetItem *addHostInList(const QString &name);
	public:
		UserWidget(UMSDatabase *dbase);
		~UserWidget();
		void setUserNode(QDomElement elem);
		void createNewUser();
		QString user();
		void loadUsersFromFile(const QString &fname); //< загружает список пользователей из файла
	private slots:
		void on_pbSave_clicked();
		void on_pbAddUser_clicked();
		void on_pbRemoveUser_clicked();
		void on_pbUpdate_clicked();
		void on_pbAddBase_clicked();
		void on_pbAddAddr_clicked();
		void on_pbRemoveBase_clicked();
		void on_pbRemoveAddr_clicked();
		void userChanged(const QModelIndex &current,const QModelIndex &prev);
	
	signals:
		void saved(QString oldname,QDomElement);
};

#endif
